package de.hm.edu.kinderfinder.location;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.Context;
import android.graphics.drawable.Drawable;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

/**
 * Diese Klasse verwaltet alle Elemente die über die Karte gelegt werden.
 * @author Lukas Jarosch
 *
 */
public class MapOverlayItems extends ItemizedOverlay {

	private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
	private Context mContext;

	/**
	 * Konstruktor zum erstellen der Verwaltungsklasse.
	 * @param defaultMarker das default Icon das verwendet werden soll beom Zeichnen des Elementes
	 */
	public MapOverlayItems(Drawable defaultMarker) {
		super(boundCenterBottom(defaultMarker));
	}

	public MapOverlayItems(Drawable defaultMarker, Context context) {
		super(boundCenterBottom(defaultMarker));
		mContext = context;
	}

	@Override
	protected OverlayItem createItem(int i) {
		return mOverlays.get(i);
	}

	@Override
	public int size() {
		return mOverlays.size();
	}

	public void addOverlay(OverlayItem overlay) {
		mOverlays.add(overlay);
		populate();
	}

	public void populateOverlays() {
		populate();
	}

	/**
	 * Definiert was passieren soll wen auf ein Element geklickt wird.
	 * Zur Zeit wird ein Dialog angezeigt.
	 */
	@Override
	protected boolean onTap(int index) {
		OverlayItem item = mOverlays.get(index);
		AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
		dialog.setTitle(item.getTitle());
		dialog.setMessage(item.getSnippet());
		dialog.show();
		return true;
	}

	/**
	 * Löscht alle Einträge in der Liste und der Darstellung.
	 */
	public void clarOverlays() {
		mOverlays.clear();
		populate();
	}

}
